package lab2;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramSocket;

/**
 * 服务器程序
 */
public class Server {
    public static void main(String[] args) throws IOException {
        // 停等协议
//        Configuration.sendWindowSize = 1;
//        Configuration.receiveWindowSize = 1;
//        Configuration.maxACKNumber = 2;

//        //GBN
//        Configuration.sendWindowSize = 10;
//        Configuration.timeOut = 1000;//设置超时时间
//        Configuration.sendLoss = 0.05;
//        File sendFile = new File(Configuration.serverDataSentFilePath); //发送数据的文件
//        File receiveFile = new File(Configuration.serverDataReceiveFilePath); //接收数据的文件
//        FileOutputStream fileOutputStream = new FileOutputStream(receiveFile); //文件输出流
//        System.out.println("----------服务器开始接收客户端器的数据----------");
//        DatagramSocket socket = new DatagramSocket(Configuration.serverPort);//获取服务器端套接字
//        socket.setSoTimeout(Configuration.socketTimeOut);//设置超时时间
//        GBN.receiveAndWriteToFile(fileOutputStream, socket);//获取来自客户端的数据
//        //接收完成，开始发送数据
//        byte[] sendBytes = GBN.getByteArray(sendFile); //获取需要发送的数据
//        System.out.println("----------服务器开始发送数据----------");
//        GBN.send(socket, sendBytes);//服务器开始发送数据
//        System.out.println("----------服务器数据发送成功----------");

        //SR
        File sendFile = new File(Configuration.serverDataSentFilePath); //发送数据的文件
        File receiveFile = new File(Configuration.serverDataReceiveFilePath); //接收数据的文件
        FileOutputStream fileOutputStream = new FileOutputStream(receiveFile); //文件输出流
        System.out.println("----------服务器开始接收客户端器的数据----------");
        DatagramSocket socket = new DatagramSocket(Configuration.serverPort);//获取服务器端套接字
        socket.setSoTimeout(Configuration.socketTimeOut);//设置超时时间
        SR.receiveAndWriteToFile(fileOutputStream, socket);//获取来自客户端的数据
        //接收完成，开始发送数据
        byte[] sendBytes = SR.getByteArray(sendFile); //获取需要发送的数据
        System.out.println("----------服务器开始发送数据----------");
        SR.send(socket, sendBytes);//服务器开始发送数据
        System.out.println("----------服务器数据发送成功----------");
    }
}
